MAPI, the messaging application programming interface, is a communication protocol that allows client programs to become (e-mail) messaging-enabled, -aware or -based, by calling subroutines that interface with messaging services. For example, MAPI allows a user to send e-mails from within an application such as a word processor (e.g., Microsoft Word™) and attach the document that the user is composing. Importantly, MAPI is the communication protocol used by the popular Microsoft Outlook™ client to communicate with Exchange™ servers to send and receive e-mails and other notifications (e.g., calendar updates, etc.) in enterprise networks. Here the term “client” is generally used to refer to a computer program that requests services and “server” is used to refer to the computer program that provides the requested services.
Microsoft regards the MAPI protocol (which is based on the Microsoft Remote Procedure Call (RPC)) used by Outlook/Exchange to be proprietary and does not release details of the protocol to third parties. Nevertheless, third parties have been able to examine communication exchanges between Outlook clients and Exchange servers in order to understand how these two entities communicate with one another. Such understanding has allowed third parties to provide support for MAPI messaging in proxies deployed between Outlook clients and Exchange servers, thus contributing to better overall user experiences in networks where such proxies are used.
A proxy (or proxy server, as it is sometimes called) is a form of computer-based device used to regulate traffic in computer networks. Generally, a proxy is a computer system and/or application program that resides logically between one or more clients and one or more content sources (e.g., servers), and which terminates connections between the clients and the content sources In response to a client request, for example for a specified service, file, connection, web page, or other resource, the proxy provides the requested content directly (e.g., if it stores a local copy of same) or connects to the specified server and makes the request on behalf of the client. In this latter case, the proxy may retain a copy of the requested content so as to service later requests for that content directly, without having to connect to the server. Proxies may also be used to filter network traffic based on various criteria.
One relatively recent use of proxies is in application delivery networks (ADNs). ADNs have become common in large enterprises where there is a need to deliver business applications to remote users and/or branch offices. ADNs typically embody layers of caching, compression, traffic shaping, quality of service management, and application-specific processes to optimize content delivery between clients and servers. The goal of the ADN is to accelerate delivery of content to the resources where it will be used or consumed.
To provide for this acceleration within an ADN (or other network), a split proxy configuration may be used. A split proxy is essentially a pair of proxies installed across two computer-based systems. Since they are effectively two parts of the same program, they can communicate with each other in a more efficient way than can conventional clients and content sources. For example, individual nodes of a split proxy can communicate efficiently with one another through the use of byte caching.
Byte caching (or dictionary compression as it is sometimes called) eliminates the repeated transmission of sequences of bytes sent over computer-to-computer connections. The goal of byte caching is to recognize and eliminate repeated sequences within the communication stream between the two computer systems. That is, instead of transmitting the repeated sequences, an indicator or tag can be used instead. So long as the indicator or tag is smaller than the original data sequence, bandwidth is saved by transmitting only the indicator. Such an exchange may take place over a byte cache tunnel between two ends of a split proxy.
FIG. 1 illustrates a communication system that includes a split proxy 103. Split proxy 103 is connected to client computers 105, 107, and 109 via a first network 113, e.g., an intranet, and includes a first proxy 115 and a second proxy 117 located on different computer platforms. Split proxy 103 intercepts communication between client computers 105, 107, and 109, and a second network 111, e.g., the Internet. Thus, if server 101 (which is communicatively coupled to network 111) attempts communication with any of client computers 105, 107, and/or 109, that communication must go through split proxy 103. Likewise, if any of client computers 105, 107, and 109 attempts communication outside of network 113, that communication must also go through split proxy 103. The communication link between the first and second proxies 115 and 117 may be a high latency link and the two proxies may collaborate (e.g., using byte caching) to reduce application latency induced by this link.
The assignee of the present invention has previously provided split proxy support for MAPI. This so-called MAPI proxy intercepts and accelerates MAPI communications between Outlook clients and Exchange servers. To facilitate this, the MAPI proxy intercepts requests by Outlook clients for Exchange services. The MAPI proxy then looks up the request in a local database, and, if there is a match, replies to the Outlook client with the port number the requested service is listening on. As used herein, the term “port” refers to a logical connection point for a client application to communicate with a server application. Applications are said to “listen” to ports when they are configured to receive service requests on the specified logical connection points.
If the request from the Outlook client is not in the MAPI proxy's database, the MAPI proxy forwards the request to the Exchange server, which responds with the port number that the requested service is listening on. The MAPI proxy populates its internal database with this information, creates a listener on that port and responds to the Outlook client with the port number.
Thereafter, when the Outlook client connects to the requested service, the MAPI proxy intercepts the request and tunnels it between the split proxy pair (e.g., proxies 115 and 117 in FIG. 1). Substantial performance increases can be realized because the local proxy device (i.e., the one located close to the Outlook client) caches server information, negating the requirement to connect to an upstream server for repeated requests. Further, the local proxy compresses the Outlook traffic and sends it over the tunnel connection to the remote proxy (i.e., the one located nearer the Exchange server), which decompresses the data before sending it to the server.
While this legacy MAPI proxy works well for older version of the MAPI protocol, recent changes to the MAPI protocol demand that new approaches be adopted in order to support MAPI-based communications between clients and servers.